Skip to main content

第16章 常用数学函数

前置说明

C语言使用头文件<math.h>,C++推荐<cmath>;随机函数额外引入<ctime>。大部分函数参数、返回值为double类型。

16.1 绝对值函数

  1. int abs(int x):整数绝对值,接收int
  2. long labs(long x):长整型绝对值
  3. double fabs(double x):浮点数绝对值 示例:
abs(-9); // 9
fabs(-3.14);// 3.14

16.2 幂与开方

  1. pow(x, y):计算 xyx^y,两个参数均为double pow(2,3) = 8.0
  2. sqrt(x):平方根,要求 x0x \ge 0 sqrt(16) = 4.0

16.3 取整函数

  1. ceil(x):向上取整,取大于等于x的最小整数 ceil(3.2)=4,ceil(-2.1)=-2
  2. floor(x):向下取整,取小于等于x的最大整数 floor(3.9)=3,floor(-2.1)=-3
  3. round(x):四舍五入取整 round(3.6)=4,round(-2.3)=-2

16.4 最值函数

  • max(a,b) / min(a,b):整数最大、最小值
  • fmax(a,b) / fmin(a,b):浮点最大、最小值

16.5 随机数函数

  1. rand():返回 0RANDMAX0 \sim RAND_MAX(一般32767)伪随机整数
  2. srand(seed):设置随机种子,srand(time(NULL))保证每次序列不同
  3. 生成区间 [a,b][a,b] 公式:a + rand() % (b - a + 1) 示例:生成1~10随机数
int num = 1 + rand() % 10;

16.6 其他数学工具

  1. fmod(x,y):浮点数取余,fmod(5.3, 2) = 1.3
  2. signbit(x):判断正负,负数返回非0,正数返回0

16.7 使用注意

  1. 浮点函数运算结果为double,赋值int会自动截断;
  2. sqrt、pow负数传入会出现未定义错误;
  3. 不写srand每次运行随机数完全一样;
  4. 混合运算注意类型转换,避免精度丢失。